package com.kang.dao;

import java.util.List;

import org.apache.ibatis.annotations.Param;

import com.kang.pojo.IntemInformation;
import com.vonechina.entity.page.InventoryQueryPage;
import com.vonechina.entity.page.InventoryWarningPage;
import com.vonechina.entity.page.ItemPage;
import com.vonechina.entity.page.IteminfoPage;
import com.vonechina.entity.page.ValidityWarningPage;

/**
 * 物品信息持久层
 * 
 * @author zs614
 *
 */
public interface IntemInformationMapper {
	/**
	 * 删除物品
	 * 
	 * @param inteminformationid
	 *            物品ID
	 * @return
	 */
	public int deleteByPrimaryKey(Integer inteminformationid);

	/**
	 * 新增物品
	 * 
	 * @param record
	 *            物品实体类
	 * @return
	 */
	public int insertSelective(IntemInformation record);

	/**
	 * 查询物品信息根据inteminformationid
	 * 
	 * @param inteminformationid
	 *            物品ID
	 * @return
	 */
	public IntemInformation selectByID(Integer inteminformationid);

	/**
	 * 更新物品信息
	 * 
	 * @param record
	 *            物品实体类
	 * @return
	 */
	public int updateByPrimaryKeySelective(IntemInformation record);

	/**
	 * 更新物品信息
	 * 
	 * @param record
	 *            物品实体类
	 * @return
	 */
	public int updateByPrimaryKey(IntemInformation record);

	/**
	 * 分页查询物品信息
	 * 
	 * @param iteminfoPage
	 *            搜索条件实体类
	 * @return
	 */
	public List<IntemInformation> listItem(IteminfoPage iteminfoPage);

	/**
	 * 查询符合条件物品数量
	 * 
	 * @param iteminfoPage
	 *            搜索条件实体类
	 * @return
	 */
	public Integer countItem(IteminfoPage iteminfoPage);

	/**
	 * 分页插叙符合条件物品，并通过ID排除部分物品
	 * 
	 * @param page
	 *            搜索条件实体类
	 * @return
	 */
	public List<IntemInformation> listNotInItem(ItemPage page);

	/**
	 * 查询排除部分物品后的物品数量
	 * 
	 * @param page
	 *            搜索条件实体类
	 * @return
	 */
	public Integer countNotInItem(ItemPage page);

	/**
	 * 查询物品最大编码
	 * 
	 * @return
	 */
	public String selectMaxItemCode();

	/**
	 * 修改库存
	 * 
	 * @param i2
	 *            物品实体类
	 * @return
	 */
	public int updateIntemInformationCurrentStock(IntemInformation i2);

	/**
	 * 库存预警-查询总条数
	 * 
	 * @param inventoryWarningPage
	 *            库存预警查询条件（分页封装的实体类）
	 * @return int型
	 */
	public int getInventoryWarningCount(InventoryWarningPage inventoryWarningPage);

	/**
	 * 库存预警-查询数据集合
	 * 
	 * @param inventoryWarningPage
	 *            库存预警查询条件（分页封装的实体类）
	 * @return 集合List<IntemInformation>
	 */
	public List<IntemInformation> getInventoryWarningList(InventoryWarningPage inventoryWarningPage);

	// 减少库存
	public Integer subtractStock(@Param("intemInformationID") Integer intemInformationID,
			@Param("number") Integer number);

	/**
	 * 有效期预警-查询总条数
	 * 
	 * @param validityWarningPage
	 *            有效期预警查询条件（分页封装的实体类）
	 * @return int型
	 */
	public int getValidityWarningCount(ValidityWarningPage validityWarningPage);

	/**
	 * 有效期预警-查询数据集合
	 * 
	 * @param validityWarningPage
	 *            有效期预警查询条件（分页封装的实体类）
	 * @return 集合List<IntemInformation>
	 */
	public List<IntemInformation> getValidityWarningList(ValidityWarningPage validityWarningPage);

	/**
	 * 库存管理--库存查询分页总条数
	 * 
	 * @param inventoryQueryPage
	 *            库存查询查询条件（分页封装的实体类）
	 * @return int型
	 */
	public int getInventoryQueryCount(InventoryQueryPage inventoryQueryPage);

	/**
	 * 库存管理--库存查询
	 * 
	 * @param inventoryQueryPage
	 *            库存查询查询条件（分页封装的实体类）
	 * @return 集合List<IntemInformation>
	 */
	public List<IntemInformation> getInventoryQueryList(InventoryQueryPage inventoryQueryPage);

	/**
	 * 桌面获取前4条库存预警
	 * 
	 * @return 库存预警集合
	 */
	public List<IntemInformation> getDesktopInventoryWarningList();

	/**
	 * 桌面获取前4条有效期预警
	 * 
	 * @return 有效期预警集合
	 */
	public List<IntemInformation> getDesktopValidityWarningList();

}